// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const _ = db.command


/** 云函数功能：
 *1.增加一条 点赞记录
    one_activity_log: {
      give_openid: '', // 给赞方 用户 openid
      give_userAvatarUrl: '', // 给赞方 用户 头像
      give_userNickName: '', // 给赞方 用户 昵称
      recv_openid: '', // 得赞方 用户 openid
      recv_userAvatarUrl: '', // 得赞方 用户 头像
      recv_userNickName: '', // 得赞方 用户 昵称
      time: '', //点赞时间
    },
  2. 给赞方： give_likes + 1
  3. 得赞方： recv_likes + 1
 */

// 云函数入口函数
exports.main = async (event, context) => {

  let give_user_openid = event.give_user_openid
  let recv_user_openid = event.recv_user_openid

  // ******* 对给赞方用户 的 字段 give_likes + 1 操作  *******
  let update_give_likes = await db.collection('activity_users').where({
    openid: give_user_openid
  }).update({
      data: {
        give_likes: _.inc(1)
      }
    })
  if (update_give_likes.errMsg != 'collection.update:ok') {
    return { result: 'fail', error: '1.云开发资源错误', more: '给赞数 +1 失败' }
  } 
  if (update_give_likes.stats.updated !== 1) {
    return { result: 'fail', error: '2.云开发资源错误', more: '给赞数 +1 失败' }
  } 
  // ******* 对 得赞方用户 的 字段 current_likes + 1 操作  *******
  let update_recv_likes = await db.collection('activity_users').where({
    openid: recv_user_openid
  }).update({
    data: {
      current_likes: _.inc(1)
    }
  })
  if (update_recv_likes.errMsg != 'collection.update:ok') {
    return { result: 'fail', error: '云开发资源错误', more: '得赞数 +1 失败' }
  }
  if (update_recv_likes.stats.updated !== 1) {
    return { result: 'fail', error: '云开发资源错误', more: '得赞数 +1 失败' }
  } 

  // ******* 读取 给赞方  用户信息  *******
  
  let give_userinfo_get = await db.collection('activity_users').where({ openid: give_user_openid}).get()
  if (give_userinfo_get.errMsg != 'collection.get:ok') {
    return { result: 'fail', error: '云开发资源错误', more: '无法读取给赞方信息' }
  }
  let give_user_info = give_userinfo_get.data[0]

  // ******* 读取 得赞方  用户信息  *******

  let recv_userinfo_get = await db.collection('activity_users').where({ openid: recv_user_openid }).get()
  if (recv_userinfo_get.errMsg != 'collection.get:ok') {
    return { result: 'fail', error: '云开发资源错误', more: '无法读取得赞方信息' }
  }
  let recv_user_info = recv_userinfo_get.data[0]

  // ******* 记录活动日志  *******
  let activity_log = {
    give_openid: give_user_openid, // 给赞方 用户 openid
    give_userAvatarUrl: give_user_info.user_avatar_url, // 给赞方 用户 头像
    give_userNickName: give_user_info.user_nick_name, // 给赞方 用户 昵称
    recv_openid: recv_user_openid, // 得赞方 用户 openid
    recv_userAvatarUrl: recv_user_info.user_avatar_url, // 得赞方 用户 头像
    recv_userNickName: recv_user_info.user_nick_name, // 得赞方 用户 昵称
    time: db.serverDate(), //点赞时间
  }
  let write_log = await db.collection('activity_log').add({ data: activity_log})
  if (write_log.errMsg != 'collection.add:ok') {
    return { result: 'fail', error: '云开发资源错误', more: '点赞日志记录失败' }
  }
  
  // ******* 运行至此，说明无误  *******
  return { 
    result: 'success',
    give_user_info: give_user_info,
    recv_user_info: recv_user_info,
    }
}